home *** CD-ROM | disk | FTP | other *** search
/ An Introduction to Progr…l Basic 6.0 (4th Edition) / An Introduction to Programming using Visual Basic 6.0.iso / COMMON / TOOLS / VB / CABINETS / MSDAO350.CAB / icontrols / Data / RecordsetProvider.class (.txt) < prev   
Encoding:
Java Class File  |  1998-01-08  |  4.0 KB  |  148 lines

  1. package icontrols.Data;
  2.  
  3. import com.ms.ado.DataSource;
  4. import com.ms.ado.Recordset;
  5. import com.ms.ado.adodb._Recordset;
  6. import com.ms.com._Guid;
  7. import com.ms.wd.core.CancelEvent;
  8. import com.ms.wd.core.CancelEventHandler;
  9. import com.ms.wd.core.Event;
  10. import com.ms.wd.core.EventHandler;
  11. import com.ms.wd.util.Utils;
  12.  
  13. public class RecordsetProvider {
  14.    private DataSource m_dataSource = null;
  15.    private String m_dataMember = null;
  16.    private Recordset m_recordset = null;
  17.    private EventHandler m_acquireRecordsetHandler = null;
  18.    private EventHandler m_releaseRecordsetHandler = null;
  19.    private CancelEventHandler m_willAcquireRecordsetHandler = null;
  20.    private CancelEventHandler m_willReleaseRecordsetHandler = null;
  21.  
  22.    public DataSource getDataSource() {
  23.       return this.m_dataSource;
  24.    }
  25.  
  26.    public void setDataSource(DataSource dataSource) {
  27.       this.releaseRecordset();
  28.       this.m_dataSource = dataSource;
  29.       this.acquireRecordset();
  30.    }
  31.  
  32.    public void setWillReleaseRecordset(CancelEventHandler handler) {
  33.       this.m_willReleaseRecordsetHandler = handler;
  34.    }
  35.  
  36.    private void acquireRecordset() {
  37.       if (this.fireWillAcquireRecordset()) {
  38.          throw new RuntimeException("AcquireRecordset canceled");
  39.       } else {
  40.          if (this.m_dataSource != null) {
  41.             _Guid riid = _Recordset.iid;
  42.             Object member = this.m_dataSource.getDataMember(this.m_dataMember, riid);
  43.             if (member != null) {
  44.                Recordset source = null;
  45.                _Recordset rs = null;
  46.  
  47.                try {
  48.                   rs = (_Recordset)member;
  49.                } catch (Exception var7) {
  50.                }
  51.  
  52.                if (rs == null) {
  53.                   try {
  54.                      source = (Recordset)member;
  55.                   } catch (Exception var6) {
  56.                   }
  57.                } else {
  58.                   source = new Recordset(rs);
  59.                }
  60.  
  61.                if (source != null) {
  62.                   this.m_recordset = source;
  63.                   this.onAcquireRecordset(Event.EMPTY);
  64.                }
  65.             }
  66.          }
  67.  
  68.       }
  69.    }
  70.  
  71.    public boolean fireWillReleaseRecordset() {
  72.       CancelEvent event = new CancelEvent(false);
  73.       if (this.m_willReleaseRecordsetHandler != null) {
  74.          this.m_willReleaseRecordsetHandler.invoke(this, event);
  75.       }
  76.  
  77.       return event.cancel;
  78.    }
  79.  
  80.    public void onAcquireRecordset(Event event) {
  81.       if (this.m_acquireRecordsetHandler != null) {
  82.          this.m_acquireRecordsetHandler.invoke(this, event);
  83.       }
  84.  
  85.    }
  86.  
  87.    private void releaseRecordset() {
  88.       if (this.m_recordset != null) {
  89.          if (this.fireWillReleaseRecordset()) {
  90.             throw new RuntimeException("ReleaseRecordset canceled");
  91.          }
  92.  
  93.          this.m_recordset = null;
  94.          this.onReleaseRecordset(Event.EMPTY);
  95.       }
  96.  
  97.    }
  98.  
  99.    public void setOnAcquireRecordset(EventHandler handler) {
  100.       this.m_acquireRecordsetHandler = handler;
  101.    }
  102.  
  103.    public String getDataMember() {
  104.       return this.m_dataMember;
  105.    }
  106.  
  107.    public void setDataMember(String dataMember) {
  108.       if (!Utils.stringsEqual(dataMember, this.m_dataMember)) {
  109.          this.releaseRecordset();
  110.          this.m_dataMember = dataMember;
  111.          this.acquireRecordset();
  112.       }
  113.  
  114.    }
  115.  
  116.    public Recordset getRecordset() {
  117.       return this.m_recordset;
  118.    }
  119.  
  120.    public boolean isRecordsetAcquired() {
  121.       return this.m_recordset != null;
  122.    }
  123.  
  124.    public void setWillAcquireRecordset(CancelEventHandler handler) {
  125.       this.m_willAcquireRecordsetHandler = handler;
  126.    }
  127.  
  128.    public boolean fireWillAcquireRecordset() {
  129.       CancelEvent event = new CancelEvent(false);
  130.       if (this.m_willAcquireRecordsetHandler != null) {
  131.          this.m_willAcquireRecordsetHandler.invoke(this, event);
  132.       }
  133.  
  134.       return event.cancel;
  135.    }
  136.  
  137.    public void onReleaseRecordset(Event event) {
  138.       if (this.m_releaseRecordsetHandler != null) {
  139.          this.m_releaseRecordsetHandler.invoke(this, event);
  140.       }
  141.  
  142.    }
  143.  
  144.    public void setOnReleaseRecordset(EventHandler handler) {
  145.       this.m_releaseRecordsetHandler = handler;
  146.    }
  147. }
  148.